# 模拟头部信息
# 我们抓取网页一般需要对 headers（网页头信息）进行模拟，这时候需要使用到 urllib.request.Request 类：

# class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
# url：url 地址。
# data：发送到服务器的其他数据对象，默认为 None。
# headers：HTTP 请求的头部信息，字典格式。
# origin_req_host：请求的主机地址，IP 或域名。
# unverifiable：很少用整个参数，用于设置网页是否需要验证，默认是False。。
# method：请求方法， 如 GET、POST、DELETE、PUT等。
import urllib.request
import urllib.parse

url = 'https://www.runoob.com/?s='  # 菜鸟教程搜索页面
keyword = 'Python 教程'
key_code = urllib.request.quote(keyword)  # 对请求进行编码
url_all = url+key_code
header = {
    'User-Agent': 'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}  # 头部信息
request = urllib.request.Request(url_all, headers=header)
reponse = urllib.request.urlopen(request).read()

fh = open("./urllib_test_runoob_search.html", "wb")    # 将文件写入到当前目录中
fh.write(reponse)
fh.close()
